package tothreedesignmodel.singleton;

import java.io.Serializable;

/**
 * 单例模式--懒汉模式 *
 *
 * 适用于多线程
 * 缺点：影响性能，消耗更多资源
 *
 * 注意：反射会破坏单例
 *
 * @Author lzhphantom
 * @Description
 * @Date 创建于 14:01 2020/7/17
 * @Modified
 */
public class LazySingletonMultithreading implements Serializable {
    public volatile static LazySingletonMultithreading singleton;

    private LazySingletonMultithreading() {

    }

    public static LazySingletonMultithreading getInstance() {
        if (singleton == null) {
            // synchronized占用资源较多，为了避免占用过多资源，锁前判断，是否实例化
            synchronized (LazySingletonMultithreading.class) {
                if (singleton == null) {
                    singleton = new LazySingletonMultithreading();
                }
            }
        }
        return singleton;
    }
}
